//обрабатывает ошибки при работе с базой
void db_error(sqlite3 *db);

//создать таблицы если они не сущетсвуют
int create_tables_if_not_exist(sqlite3 *db);

//возвращает вектор строк порождённых запросом queue
int get_text_lines(sqlite3 *db, char ***text_vector, const char *queue);

//возвращает вектор путей отмеченных тегами tags
int get_paths_with_tags(sqlite3 *db, char ***paths, char *tags[]);

int get_paths_without_tags(sqlite3 *db, char ***paths);

//возвращает вектор тегов имеющихся в базе
int get_all_tags(sqlite3 *db, char ***tags);

//возвращает теги которыми отмечен путь path
int get_tags_for_path(sqlite3 *db, char ***tags, const char *path);

//добавляет новый тег в таблицу тегов, если тег уже существует он игнорируется
int add_tag_if_not_exists(sqlite3 *db, const char *tag);

int add_tags_if_not_exist(sqlite3 *db, const char *tags[]);

int delete_tag(sqlite3 *db, const char *tag);

int rename_tag(sqlite3 *db, const char *old_name, const char *new_name);

//добавляет новый путь, в таблицу путей
//если путь в таблице уже существует, он игнорируется
int add_path_if_not_exists(sqlite3 *db, const char *path);

int delete_path(sqlite3 *db, const char *path);

int add_tag_path_link(sqlite3 *db, const char *tag, const char *path);

int add_path_tags_links(sqlite3 *db, const char *path, const char *tags[]);
//удаляет все связи тег -> путь для данного пути
int delete_all_links_with_path(sqlite3 *db, const char *path);
